package com.qf.fmall2204.wxpay;

import com.github.wxpay.sdk.WXPay;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * 封装一个微信支付的工具类型
 */
public class WxPayUtils {


    public static void main(String[] args) throws Exception {
        String oid = UUID.randomUUID().toString().replaceAll("-", "");
        String result = WxPayUtils.getPayUrl(oid, 1, "小虾条");
        System.out.println(result);

        String orderStatus = getOrderStatus(oid);

    }


    /**
     * 自定义查询订单状态方法
     * @param oid 订单编号
     * @return 订单状态
     */
    public static String getOrderStatus(String oid) throws Exception {
        // 1. 创建微信支付的核心对象 (参数MyWexinConfig中包含了商户号、appid、appkey)
        WXPay wxPay = new WXPay(new MyWexinConfig());

        // 2. 准备下单接口必传参数
        HashMap<String, String> reqeustData = new HashMap<>();
        reqeustData.put("out_trade_no",oid);

        // 3. 调用查询订单状态的方法
        Map<String, String> map = wxPay.orderQuery(reqeustData);
//        System.out.println(map);
        return map.get("trade_state");
    }


    /**
     * 自定义下单方法
     * @param oid 订单编号
     * @param totalAmout 订单总金额
     * @param prodDesc 订单的商品描述
     * @return 微信支付平台返回的map
     */
    public static String getPayUrl(String oid,Integer totalAmout,String prodDesc) throws Exception {

        // 1. 创建微信支付的核心对象 (参数MyWexinConfig中包含了商户号、appid、appkey)
        WXPay wxPay = new WXPay(new MyWexinConfig());

        // 2. 准备下单接口必传参数
        HashMap<String, String> reqeustData = new HashMap<>();
        reqeustData.put("out_trade_no",oid);
        reqeustData.put("fee_type","CNY"); // 币种
        reqeustData.put("total_fee","1");// 订单总金额，单位是分 ,注意;这里应该使用 totalAmout
        reqeustData.put("trade_type","NATIVE"); // 支付类型 NATIVE 固定写法
        reqeustData.put("body",prodDesc); // 订单描述信息
        reqeustData.put("notify_url","http://47.118.45.73:8080/pay/callback"); // 商户提供的回调地址

        // 3. 调用微信下单接口 （unifiedOrder方法内部发送了http请求给微信支付平台）
        Map<String, String> result = wxPay.unifiedOrder(reqeustData);
        return result.get("code_url");
    }




}
